//选择题

import java.util.Locale;
import java.util.Scanner;

class A{
    public A(int a){}
}
class B extends A{
    public B(){
        super(10);
        System.out.println("hello");
    }
    public void fun(){};

}

class C extends B{
    public abstract class MyClass {
        public int constInt = 5;
        public abstract void method(int a);
        public void add(){
            constInt=constInt+5;//对成员变量的赋值要放到方法的内部
        }
        public abstract void anotherMethod();
        //add code here
        public void method() {
        }
    }
}

class Test {
    public static void hello() {
        System.out.println("hello");
    }
}

class Base {
    Base() {
        System.out.print("Base");
    }
}



public class select {
    public static void main1(String[] args) {
        A a1=new A(10);
        A a2=new B();
        A a3=new C();
    }

    public static void main2(String[] args) {
        String s="admin";//toLowerCase是让这个字符串转化为小写，本身是小写那么就return this(返回自身)
        String s1="Admin";//将Admin转化为小写不是在原来的基础上修改，而是return new String(产生了一个新的对象)
        String s2=s.toLowerCase();
        String s3=s1.toLowerCase();
        System.out.println(s==s2);
        System.out.println(s1==s3);//产生的新对象和常量值相比是false
    }

    public static void main3(String[] args) {
        Test test=null;
        test.hello();
    }

    //编程题1

/*    牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.
            如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2*/


    /*输入描述:
    输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)

    第二行包括n个整数A_i(1 ≤ A_i ≤ 10^9),表示数组A的每个数字。


    输出描述:
    输出一个整数表示牛牛可以将A最少划分为多少段排序子序列
            示例1
    输入
        6
        1 2 3 2 2 1
    输出
        2*/
    public static void main4(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        // 注意 hasNext 和 hasNextLine 的区别
        int[] arr = new int[n + 1];//n+1是为了循环的时候防止数组越界
        for (int i = 0; i < n; i++) {
            arr[i] = scan.nextInt();
        }
        int i = 0;
        int count = 0;
        while (i < n) {
            if (arr[i] < arr[i + 1]) {
                while (i < n && arr[i] < arr[i + 1]) {
                    i++;
                }
                count++;
                i++;
            } else if (arr[i] == arr[i + 1]) {
                i++;
            } else {
                while (i < n && arr[i] > arr[i + 1]) {
                    i++;
                }
                count++;
                i++;
            }
        }
        System.out.println(count);
    }

    //编程题2
    /*将一句话的单词进行倒置，标点不倒置。比如 I like beijing. 经过函数后变为：beijing. like I
    输入描述：
    每个测试输入包含1个测试用例： I like beijing. 输入用例长度不超过100
    输出描述：
    依次输出倒置之后的字符串,以空格分割
    示例1
    输入：
    I like beijing.
    输出：
    beijing. like I
*/
    public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        String[] str=scan.nextLine().split(" ");//这段代码是用来读取用户输入的一行字符串，然后将每个单词按照空格分割并倒序输出。
        for (int i = str.length-1; i >=0 ; i--) {
            System.out.print(str[i]+" ");//，+""的作用是将字符串拼接为空字符串，起到一个格式化输出的作用，每个单词之间用空格分隔。这样可以确保输出的各个单词之间有合适的空格，使输出看起来更加美观。
        }
    }


    //
    public static void reverse(char[] array,int start,int end) {
        while(start < end) {
            char tmp = array[start];
            array[start] = array[end];
            array[end] = tmp;
            start++;
            end--;
        }
    }
    public static void main5(String[] args) {
        Scanner scan = new Scanner(System.in);
        String s = scan.nextLine();
        char[] ch = s.toCharArray();
        int len = ch.length;
//1、整体进行了逆置
        reverse(ch,0,len-1);
        int i = 0;//遍历ch数组
        while( i < len ) {
            int j = i;
            while(j < len && ch[j] != ' ') {
                j++;
            }
            if(j < len) {
                reverse(ch,i,j-1);
                i = j+1;
            }else{
                reverse(ch,i,j-1);
                i = j;
            }
        }
        String str = new String(ch);
        System.out.println(str);
    }
}
